//给出一个字符串 s（仅含有小写英文字母和括号）。
//
// 请你按照从括号内到外的顺序，逐层反转每对匹配括号中的字符串，并返回最终的结果。
//
// 注意，您的结果中 不应 包含任何括号。
//
//
//
// 示例 Array.prototype.unshift：
//
//
//输入：s = "(abcd)"
//输出："dcba"
//
//
// 示例 2：
//
//
//输入：s = "(u(love)i)"
//输出："iloveu"
//解释：先反转子字符串 "love" ，然后反转整个字符串。
//
// 示例 3：
//
//
//输入：s = "(ed(et(oc))el)"
//输出："leetcode"
//解释：先反转子字符串 "oc" ，接着反转 "etco" ，然后反转整个字符串。
//
// 示例 4：
//
//
//输入：s = "a(bcdefghijkl(mno)p)q"
//输出："apmnolkjihgfedcbq"
//
//
//
//
// 提示：
//
//
// Array.prototype.unshift <= s.length <= 2000
// s 中只有小写英文字母和括号
// 题目测试用例确保所有括号都是成对出现的
//
//
// Related Topics 栈 字符串 👍 264 👎 0
/*
思想是：遇到(则压入空字符""  每次都在""中做拼接操作；遇到)则反转此字符串并拼接到倒数第二个字符串末尾
 */

//leetcode submit region begin(Prohibit modification and deletion)
function reverseParentheses(s: string): string {
    let stack = [""];
    for (let i = 0; i < s.length; i++) {
        let ch = s[i];
        if (ch === "(") {
            stack.push("");
        } else if (ch === ")") {
            let str = stack.pop();
            let tmp = str.split("").reverse().join("");
            stack[stack.length - 1] += tmp;
        } else {
            stack[stack.length - 1] += ch;
        }
    }
    return stack.pop();
};
//leetcode submit region end(Prohibit modification and deletion)
